package com.cyy.test_t_5_;
/**
 * 剑指Offer 面试题55
 * 字符流中第一个不重复的字符
 * 题目描述：
 * 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如，
 * 当从字符流中只读出前两个字符"go"时，第一个只出现一次的字符
 * 是"g"。当从该字符流中读出前六个字符“google"时，第一个只出现一次的字符是"l"。 
 * 输出描述:
 * 如果当前字符流没有存在出现一次的字符，返回#字符。
 * 2016年12月6日 下午9:16:33
 */
public class t_55 {

	static int occurrence[] = new int[256];
	
	static int index = 1;
	
	//Insert one char from stringstream
    public static void Insert(char ch)
    {
        if(occurrence[ch] == 0){
        	occurrence[ch] = index ++;
        }else{
        	occurrence[ch] = -1;
        }
        
    }
    //return the first appearence once char in current stringstream
    public static char FirstAppearingOnce()
    {
    	char ch = '#';
    	int minIndex = Integer.MAX_VALUE;
    	for(int i = 0; i < 256; i ++){
    		if(occurrence[i] != 0 && occurrence[i] != -1 
    				&& occurrence[i] < minIndex){
    			minIndex = occurrence[i];
    			ch = (char)i;
    		}
    	}
    	    	
    	return ch;
    }
	
}
